import cn.hutool.core.date.DateTime;
import org.quartz.TriggerUtils;
import org.quartz.impl.triggers.CronTriggerImpl;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;

/**
 * 在线运行：https://tool.lu/crontab/
 */
public class Test {
    public static void main(String[] args) {
        try {
            CronTriggerImpl cronTriggerImpl = new CronTriggerImpl();
            // 每天早上10：15触发
//            cronTriggerImpl.setCronExpression("0 0 10 10 10 ? 2022");
//            cronTriggerImpl.setCronExpression("0 0 10 29 2 ? *");
//            cronTriggerImpl.setCronExpression("0 0 10 29 2 ? *");

            // 2023.08.18 14:33:44 每隔5分钟
            // 2023.08.18 14:38:44
            cronTriggerImpl.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
            cronTriggerImpl.setStartTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2023-08-18 16:18:54"));
            cronTriggerImpl.setCronExpression("* */8 * * * ? *");
//            Calendar calendar = Calendar.getInstance();
//            Date now = calendar.getTime();
//            // 把统计的区间段设置为从现在到1月后的今天(主要是为了方法通用考虑)
//            calendar.add(Calendar.MONTH, 1);
            // 这里的时间是根据corn表达式算出来的值
            List<Date> dates = TriggerUtils.computeFireTimes(cronTriggerImpl, null, 10);
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            dates.forEach(date -> {
                System.out.println(dateFormat.format(date));
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

